<?php
namespace app\command;

use think\console\Command;
use think\console\Input;
use think\console\Output;
use app\protocol\Server;
use app\protocol\commands\HelpCommand;

class TextProtocolServer extends Command
{
    protected function configure()
    {
        $this->setName('textprotocol:serve')
            ->setDescription('启动文本协议服务器')
            ->addOption('daemon', 'd', null, '以守护进程方式运行');
    }

    protected function execute(Input $input, Output $output)
    {
        $config = config('protocol.server', []);

        $output->writeln('启动 ThinkPHP 8.0 文本协议服务器...');
        $output->writeln("监听地址: {$config['host']}:{$config['port']}");
        $output->writeln('协议类型: ' . ($config['protocol'] ?? 'text'));

        // 创建服务器实例
        $server = new Server(app(), $config);

        // 注册帮助命令（需要路由器实例）
        $server->getRouter()->register('help', HelpCommand::class, '显示帮助信息');

        $output->writeln('服务器启动成功，使用 telnet 连接测试');
        $output->writeln("命令: telnet {$config['host']} {$config['port']}");
        $output->writeln('输入 "help" 查看可用命令');

        // 运行服务器
        $server->run();
    }
}